typedef struct {
    char *pattern;
    char *charset;
    int pattern_len;
    int charset_len;
    int *transition;
} mydfa;

#define MYDFA_IDX(i, j, c) (i * c + j)

mydfa *mydfa_create(char *p);
int mydfa_match(mydfa *d, char *s); // 返回模式在字符串中的位置，-1表示失败
